﻿using MasterEntities.Abstraction;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MasterEntities
{
    public class IdentifikacioniDokument : IDomainObject
    {
        public long Id { get; set; }
        public string Naziv { get; set; }
        public string BrojIdentifikacionogDokumenta { get; set; }
        public Nullable<long> MestoIzdavanjaId { get; set; }
        public Nullable<System.DateTime> VaziDo { get; set; }
        public Nullable<System.DateTime> VaziOd { get; set; }

        public virtual Mesto Mesto { get; set; }
        public virtual ICollection<Osoba> Osoba { get; set; }

        public IdentifikacioniDokument()
        {

        }

        public IdentifikacioniDokument(long Id, string Naziv, string BrojIdentifikacionogDokumenta, long? MestoIzdavanjaId, DateTime? VaziDo, DateTime? VaziOd)
        {
            this.Id = Id;
            this.Naziv = Naziv;
            this.BrojIdentifikacionogDokumenta = BrojIdentifikacionogDokumenta;
            this.MestoIzdavanjaId = MestoIzdavanjaId;
            this.VaziDo = VaziDo;
            this.VaziOd = VaziOd;  
        }

        public string Alias()
        {
            return "i";
        }

        public string BaseClassName()
        {
            return string.Empty;
        }

        public string SchemaName()
        {
            return "dbo";
        }

        public string PrimaryKey()
        {
            return Id.ToString();
        }

        public string GetTableName()
        {
            return "IdentifikacioniDokument";
        }

        public string InsertColumns()
        {
            return "(Id, Naziv, BrojIdentifikacionogDokumenta,MestoIzdavanjaId, VaziDo, VaziOd  )";
        }

        public string ColumnsToUpdate()
        {
            return string.Format("Naziv = {0}, BrojIdentifikacionogDokumenta= {1}, MestoIzdavanjaId = {2}, VaziDo = {3}, VaziOd = {4}"
                , (string.IsNullOrEmpty(Naziv) ? "NULL" : "'" + Naziv + "'"),
                (string.IsNullOrEmpty(BrojIdentifikacionogDokumenta) ? "" : "'"+BrojIdentifikacionogDokumenta+"'"),
                (MestoIzdavanjaId == null ? "NULL" : MestoIzdavanjaId.ToString()),
                (VaziDo == null ? "NULL" : "'" + Convert.ToDateTime(VaziDo)+"'"),
                (VaziOd == null ? "NULL" : "'" + Convert.ToDateTime(VaziOd) + "'")
                );
        }

        public string InsertValues()
        {
            return "( " + Id.ToString() + " , " + (string.IsNullOrEmpty(Naziv) ? "NULL" : "'"+Naziv+"'" )+ ",'" + (string.IsNullOrEmpty(BrojIdentifikacionogDokumenta) ? "" : BrojIdentifikacionogDokumenta ) + "', " + (MestoIzdavanjaId == null ? "NULL" : MestoIzdavanjaId.ToString()) +","+ (VaziDo == null ? "NULL" : "'" + Convert.ToDateTime(VaziDo) + "'") + "," + (VaziOd == null ? "NULL" : "'" + Convert.ToDateTime(VaziOd) + "'") + ")";
        }


        public byte[] GetProfilePicture()
        {
            return null;
        }
    }
}
